/**
 * @author liangxi
 * @since 2023/12/21
 */

#ifndef DESIGNPATTERN_ITERATOR_H
#define DESIGNPATTERN_ITERATOR_H

#include <memory>
#include "../MenuItem.h"

namespace Iterator::Transition {

    class Iterator {
    public:
        virtual ~Iterator() = 0;

        virtual bool hasNext() = 0;

        virtual std::shared_ptr<MenuItem> next() = 0;
    };

    Iterator::~Iterator() = default;

} // Transition

#endif //DESIGNPATTERN_ITERATOR_H
